// =============================================================================
// | 包: router                                                               |
// | 模块: 日志路由                                                           |
// | 功能: 定义和注册日志相关的API路由                                        |
// =============================================================================
package router

import (
	"blog_server/api"          // API入口包 - 提供所有API模块的统一访问
	"blog_server/middleware"   // 中间件包 - 提供权限验证等功能

	"github.com/gin-gonic/gin" // Gin框架 - 提供HTTP路由功能
)

// =============================================================================
// | 函数: LogRouter                                                          |
// | 参数: @r - *gin.RouterGroup (Gin路由组，用于注册日志相关路由)             |
// | 返回: 无                                                                  |
// | 功能: 注册日志相关的所有API路由，包括列表查看、标记已读和删除功能         |
// | 说明: 所有日志路由均需管理员权限，使用组级中间件统一控制权限              |
// |----------------------------------------------------------------------------|
// | 流程:                                                                     |
// | 1. 获取日志API实例 - 从全局API实例中获取LogApi                            |
// | 2. 添加组级管理员权限中间件 - 统一控制所有日志路由权限                    |
// | 3. 注册日志列表查看路由 - GET请求，路径为"/logs"                          |
// | 4. 注册日志标记已读路由 - GET请求，路径为"logs/:id"                      |
// | 5. 注册日志批量删除路由 - DELETE请求，路径为"logs"                         |
// =============================================================================
func LogRouter(r *gin.RouterGroup) {
	// --------------------------------------------------------------------------
	// | 步骤1: 获取日志API实例                                                  |
	// --------------------------------------------------------------------------
	app := api.App.LogApi // 获取日志API实例

	// --------------------------------------------------------------------------
	// | 步骤2: 添加组级管理员权限中间件                                          |
	// --------------------------------------------------------------------------
	// 为日志路由组添加管理员权限中间件，统一控制所有日志路由的访问权限
	// 权限要求：用户必须具有管理员权限(enum.RoleType=ADMIN)才能访问任何日志相关接口
	// 安全说明：日志数据属于系统敏感信息，需要严格的访问控制
	r.Use(middleware.AdminMiddleware) // 组级管理员权限验证

	// --------------------------------------------------------------------------
	// | 步骤3: 注册日志列表查看路由                                             |
	// --------------------------------------------------------------------------
	// 注册日志列表查看路由 - GET请求，路径为"/logs"
	r.GET("/logs", app.LogListView) // 查看系统日志列表

	// --------------------------------------------------------------------------
	// | 步骤4: 注册日志标记已读路由                                             |
	// --------------------------------------------------------------------------
	// 注册日志标记已读路由 - GET请求，路径为"logs/:id"，其中:id为日志ID参数
	r.GET("logs/:id", app.LogReadView) // 标记指定日志为已读

	// --------------------------------------------------------------------------
	// | 步骤5: 注册日志批量删除路由                                             |
	// --------------------------------------------------------------------------
	// 注册日志批量删除路由 - DELETE请求，路径为"logs"
	r.DELETE("logs", app.LogRemoveView) // 批量删除系统日志
}
